package com.hyjy.music

import android.util.SparseArray
import android.widget.ImageView
import com.hyjy.music.util.showToast

/**
 * 播放模式
 *
 * @param description 描述信息
 * @param icon 图标
 */
enum class PlayMode(val description: Int, val icon: Int) {
    ListLoop(R.string.music_list_loop, R.drawable.ic_baseline_repeat),

    RandomPlay(R.string.music_random_play, R.drawable.ic_baseline_shuffle),

    SingleLoop(R.string.music_single_loop, R.drawable.ic_baseline_repeat_one)
}

/**
 * 建立数字与播放模式的映射关系
 */
private val playModeArray: SparseArray<PlayMode> by lazy {
    SparseArray<PlayMode>().apply {
        PlayMode.values().forEachIndexed { index, playMode ->
            this[index] = playMode
        }
    }
}

/**
 * 根据映射关系，将数字转换为播放模式
 */
fun Int.toPlayMode(): PlayMode = playModeArray[this % PlayMode.values().size] ?: PlayMode.ListLoop

/**
 * 根据播放模式显示图标和描述
 */
infix fun Int.showPlayMode(target: ImageView?) {
    toPlayMode().run {
        target?.setImageResource(icon)
        showToast(description)
    }
}